/**
 *author:yhb
 */
package com.towker.frame.service.rbac.sys;

import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;

import com.towker.core.db.*;
import com.towker.core.page.*;
import com.towker.frame.dao.rbac.*;
import com.towker.frame.model.rbac.Subsystem;
import com.towker.frame.share.ServiceShare;

@Service
public class SubsystemService extends BaseService<Subsystem, java.lang.Long>
{
	private SubsystemDao subsystemDao;
	@SuppressWarnings("unused")
	private RoleUserDao roleUserDao;
	@SuppressWarnings("unused")
	private RoleResourceDao roleResourceDao;
	private RoleDao roleDao;
	@SuppressWarnings("unused")
	private ResourceDao resourceDao;
	public void setSubsystemDao(SubsystemDao subsystemDao){this.subsystemDao = subsystemDao;}
	public void setRoleUserDao(RoleUserDao roleUserDao){this.roleUserDao = roleUserDao;}
	public void setRoleResourceDao(RoleResourceDao roleResourceDao){this.roleResourceDao = roleResourceDao;}
	public void setRoleDao(RoleDao roleDao){this.roleDao = roleDao;}
	public void setResourceDao(ResourceDao resourceDao){this.resourceDao = resourceDao;}

	@SuppressWarnings("unchecked")
	@Override
	protected EntityDao getEntityDao(){return (EntityDao) this.subsystemDao;}

	/**
	 * 根据系统编号删除系统，已经与系统相关的所有。
	 * 功能：根据系统标识删除系统记录，以及与系统相关的记录。
	 * 输入：sysid-所要删除的系统标识信息。
	 * 输出：无。
	 * 备注：删除系统记录，还有与之相关的记录，包括系统角色信息，系统资源信息，系统日志信息等。
	 * 示例：SubsystemService.delSubsystemAndRelated(-1L);删除标识为"-1"的子系统，以及与之相关的信息。
	 */
	public void delSubsystemAndRelatedBySysid(long sysid)
	{
		this.roleDao.delRoleAndRelatedBySysid(sysid);
		//this.resourceDao.delBySysid(sysid);
		this.subsystemDao.delById(sysid);
	}
	
	@SuppressWarnings("unchecked")
	public PageModel getPage(int currentPage, Map map)
	{
		PageRequest request = new PageRequest();
		request.setFilters(map);
		request.setCurrentPage(currentPage);
		request.setPageSize(5);
		PageModel page = subsystemDao.getPage(request);
		return page;
	}
	
	/**
	 *获得所有子系统。 
	 * */
	public List<Subsystem> getSys()
	{
		return subsystemDao.getSys();
	}
	
	/**
	 * 功能：根据用户系统标识，获得用户的可访问系统列表。
	 * 输入：userid-用户的系统标识。
	 * 输出：List<Subsystem>-用户可访问的系统列表。
	 * 备注：将某用户可访问的系统从数据库表中提出，返回给用户。
	 * 示例：SubsystemService.getSysByUserid(1L);获得用户标识为"1"的用户的可访问系统列表。
	 * */
	public List<Subsystem> getSysByUserid(long userid)
	{
		return subsystemDao.getSysByUserid(userid);
	}
	
	@SuppressWarnings("unchecked")
	public static void main(String[] args)
	{
		@SuppressWarnings("unused")
		SubsystemService service=(SubsystemService)ServiceShare.getService(SubsystemService.class);
	}
}
